import argparse

def parse():
    parser = argparse.ArgumentParser(description='染色体识别')
    parser.add_argument('--model_number', type=int, required=True, help='model_number: 模型号')
    parser.add_argument('--pre_model', type=str, required=True, help='pre_model: 预训练模型名')
    parser.add_argument('--epochs'      , type=int, default=100, help='epoch_num: epoch数量')
    parser.add_argument('--batch_size'  , type=int, default=100, help='batch_size: 每个batch的大小')
    parser.add_argument('--lr'          , type=float, default=3e-5, help='learn_rate: 学习率')
    parser.add_argument('--pm'          , type=int, default=10,help='print_margin_batch: 每n个batch输出一次 accuracy等信息')
    parser.add_argument('--sm'          , type=int, default=10, help='save_margin_epoch : 每n个epoch保存一次 模型')
    parser.add_argument('--is_test'     , action='store_true', default=False, help='处于测试状态，默认不处于测试（=训练）')
    parser.add_argument('--use_mydata'  , action='store_true', default=False, help='使用自己的少量数据，默认不使用（=使用异源数据集）')
    
    # parser.add_argument('--use_transformer', action='store_true', default=False, help='使用transformer，默认不使用')
    # parser.add_argument('--use_siamese' , action='store_true', default=False, help='使用孪生姊妹网络')
    # parser.add_argument('--use_location', action='store_true', default=False, help='使用染色体端粒信息，默认不使用')
    # parser.add_argument('--use_shape'   , action='store_true', default=False, help='使用图像大小信息，默认不使用')
    args = parser.parse_args()
    return args

def get_use(model_number):
    
    list_transformer= list_siamese= list_location= list_shape= [0,1]
    map_number_use ={}
    for i1 in list_transformer:
        for i2 in list_siamese:
            for i3 in list_location:
                for i4 in list_shape:
                    model_number_temp = eval(f'0b{i1}{i2}{i3}{i4}')
                    map_number_use[model_number_temp] = {
                        'use_transformer':i1,
                        'use_siamese':i2,
                        'use_location':i3,
                        'use_shape':i4,
                    }
    use_dict = map_number_use[model_number]
    return use_dict